package pe.edu.unmsm.fiee.sispagos.presentacion.controller.procesos;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import pe.edu.unmsm.fiee.sispagos.negocio.modelo.AlumnoDTO;
import pe.edu.unmsm.fiee.sispagos.negocio.modelo.ConceptoPagoDTO;
import pe.edu.unmsm.fiee.sispagos.negocio.modelo.VWCxCAlumnoDTO;
import pe.edu.unmsm.fiee.sispagos.negocio.modelo.VWVoucherPagoDTO;
import pe.edu.unmsm.fiee.sispagos.negocio.servicio.ConceptoPagoService;
import pe.edu.unmsm.fiee.sispagos.negocio.servicio.CuentaPorCobrarService;

@Controller
@Scope("view")
public class GestionCxCController {

	private AlumnoDTO alumno;
	private List<VWCxCAlumnoDTO> cxcAlumno;
	private List<ConceptoPagoDTO> listConceptos;
	private VWCxCAlumnoDTO ctaDebe;
	
	@Resource
	CuentaPorCobrarService cxcService;
	@Resource
	ConceptoPagoService conceptoPagoService;
	
	public GestionCxCController() {
		super();
		setAlumno(new AlumnoDTO());
		setCtaDebe(new VWCxCAlumnoDTO());
	}
	
	@PostConstruct
	private void init(){
		setListConceptos(conceptoPagoService.listarCptosxNombre(""));
	}

	public void cargarCxCxCodAlumno(ActionEvent ev){
		setCxcAlumno(cxcService.listarVWCuentasxCobrarxAlumno(alumno.getCodigoMatricula().trim()));
		System.out.println("cxc encontradas:" +getCxcAlumno().size());
	}
	
	public void inicializarCtaDebe(ActionEvent ev){
		setCtaDebe(new VWCxCAlumnoDTO());
	}
	
	public void anadirDebeACtasxCobrar(ActionEvent ev){
		if(cxcAlumno.size()>0){
			getCtaDebe().setTipoCta(1);
			getCtaDebe().setCodigoAlumno(alumno.getCodigoMatricula());
			getCtaDebe().setApellidoMaterno(cxcAlumno.get(0).getApellidoMaterno());
			getCtaDebe().setApellidoPaterno(cxcAlumno.get(0).getApellidoPaterno());
			getCtaDebe().setNombresAlumno(cxcAlumno.get(0).getNombresAlumno());
			getCxcAlumno().add(getCtaDebe());
			setCxcAlumno(cxcService.ordenarCxC(getCxcAlumno()));	
		}
		
	}
	
	public void guardarConstancia(ActionEvent ev){
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			cxcService.guardarCxCxAlumno(getCxcAlumno());
	        context.addMessage(null, new FacesMessage("Exito", "La Constancia fue guardada. :)"));			
		} catch (Exception e) {
			context.addMessage(null, new FacesMessage("Error", "Hubo un error al guardar.:("));
		}
    
	}
/*****************GETTERS AND SETTERS******************/
	public AlumnoDTO getAlumno() {
		return alumno;
	}

	public void setAlumno(AlumnoDTO alumno) {
		this.alumno = alumno;
	}

	public List<VWCxCAlumnoDTO> getCxcAlumno() {
		return cxcAlumno;
	}

	public void setCxcAlumno(List<VWCxCAlumnoDTO> cxcAlumno) {
		this.cxcAlumno = cxcAlumno;
	}

	public List<ConceptoPagoDTO> getListConceptos() {
		return listConceptos;
	}

	public void setListConceptos(List<ConceptoPagoDTO> listConceptos) {
		this.listConceptos = listConceptos;
	}

	public VWCxCAlumnoDTO getCtaDebe() {
		return ctaDebe;
	}

	public void setCtaDebe(VWCxCAlumnoDTO ctaDebe) {
		this.ctaDebe = ctaDebe;
	}
}
